public class Test {

    // 2. 方法传参：形参为父类型引用，可以接收任意子类的对象
    public static void eatFood(Animal a) {
        a.eat();
    } //3.作返回值：返回任意子类对象

    public static Animal buyAnimal(String var) {
        if ("狗".equals(var)) {
            return new Dog("狗狗", 1);
        } else if ("猫".equals(var)) {
            return new Cat("猫猫", 1);
        } else {
            return null;
        }
    }

    public static void main(String[] args) {
        Animal cat = new Cat("元宝", 2); // 1. 直接赋值：子类对象赋值给父类对象
        Dog dog = new Dog("小七", 1);
        eatFood(cat);
        eatFood(dog);
        Animal animal = buyAnimal("狗");
        animal.eat();
        animal = buyAnimal("猫");
        animal.eat();
    }
}
